const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const CopyPlugin = require("copy-webpack-plugin");
const outPutDir = path.resolve(__dirname, "../build");
module.exports = {
	// 1- 入口
	entry: path.resolve(__dirname, "../src/app.js"),
	// 2- 出口
	output: {
		// 出口目录
		path: outPutDir,
		// 出口JS文件
		filename: "bang.min.js",
		// 打包之前先清空path目录
		clean: true,
		// 模板页增加的引入文件以/开头
		publicPath: "/"
	},
	// 3- 插件
	plugins: [
		new HtmlWebpackPlugin({
			// 指定模板页
			template: path.resolve(__dirname, "../public/index.html"),
			// js所在的位置,在body底部
			inject: "body",
			// 在引入JS时增加字符后缀（版本信息），可以去除缓存
			hash: true,
			title: "大海大广告管理系统",
			minify: {
				removeAttributeQuotes: true,// 移除双引号
				removeComments: true,// 移除注释
				collapseWhitespace: true,// 移除换行 空行
			}
		}),
		new CopyPlugin({
			patterns: [
				{
					// 指定复制的文件目录
					from: path.resolve(__dirname, "../public"),
					// 指定复制到的文件目录
					to: outPutDir,
					globOptions: {
						// 将index.html忽略
						ignore: ["**/index.html"],
					},

				}
			],
		}),
	],
	// 4- loader
	module: {
		rules: [
			{
				test: /\.ejs$/,
				loader: 'ejs-loader',
				options: {
					variable: '$'
				}
			}
		]
	},
	// 5- 模式
	mode: "production",
	// 6- 对文件解析用的
	resolve:{
		// 设置允许省略的扩展名
		extensions:[".js",".json",".ejs"],
		// 设置地址别名
		alias:{
			"@":path.resolve(__dirname,"../src"),
			"@v":path.resolve(__dirname,"../src/view")
		}
	}
}